package com.cc8w.controller;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

/**
 * 在控制器中，配置了RestTemplate的Bean，RestTemplate是spring-web模块下面的类，主要用来调用REST服务。
 * 本身不具有调用分布式服务的能力，但被@LoadBalanced注解修饰后，这个RestTemplate实例就具有访问调用分布式服务的能力。
 * 另外，下面调用服务，通过服务名称进行调用。
 */

@RestController
@Configuration
public class InvokerController {
	
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }

    @RequestMapping(value = "/router", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public String router(){
        RestTemplate restTpl = getRestTemplate();
        //根据应用名称调用服务
        String json = restTpl.getForObject("http://cloud-eureka-provider/user/1", String.class);
        return json;
    }

}
